package cn.tedu.csmailproduct.service.impl;

import cn.tedu.csmailproduct.ex.ServiceException;
import cn.tedu.csmailproduct.mapper.AlbumMapper;
import cn.tedu.csmailproduct.mapper.CategoryMapper;
import cn.tedu.csmailproduct.pojo.dto.AlbumAddNewDTO;
import cn.tedu.csmailproduct.pojo.dto.CategoryAddNewDTO;
import cn.tedu.csmailproduct.pojo.entity.Album;
import cn.tedu.csmailproduct.pojo.entity.Category;
import cn.tedu.csmailproduct.service.IAlbumService;
import cn.tedu.csmailproduct.service.ICategoryService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 处理分类数据的业务实现类
 *
 * @author java@tedu.cn
 * @version 0.0.1
 */
@Slf4j
@Service
public class CategoryServiceImpl implements ICategoryService {

    @Autowired
    private CategoryMapper categoryMapper;

    public CategoryServiceImpl(){
        log.debug("创建业务对象：CategoryServiceImpl");
    }

    @Override
    public void addNew(CategoryAddNewDTO categoryAddNewDTO) {
        log.debug("开始处理【添加分类】的业务，参数：{}",categoryAddNewDTO);
        // 从参数对象中获取分类名称
        String categoryAddNewDTOName = categoryAddNewDTO.getName();
        // 检查分类名称是否已经被占用（分类表中是否已经存在此名称的数据）
        log.debug("检查分类名称是否已经被占用");
        int count = categoryMapper.countByName(categoryAddNewDTOName);
        if (count > 0) {
            // 是：分类名称已经被占用，添加分类失败，抛出异常
            String message = "添加分类失败，分类名称已经被占用!";
            log.debug(message);
            throw new ServiceException(message);
        }

        // 否：分类名称没有被占用，则向分类表中插入数据
        log.debug("分类名称没有被占用，将向分类表中插入数据");
        Category category = new Category();
        BeanUtils.copyProperties(categoryAddNewDTO,category);
        log.debug("即将插入分类数据：{}", category);
        categoryMapper.insert(category);
        log.debug("插入分类数据完成");
    }
}
